package org.dslintegration.parser.antlr.internal; 

import org.eclipse.xtext.*;
import org.eclipse.xtext.parser.*;
import org.eclipse.xtext.parser.impl.*;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.parser.antlr.AbstractInternalAntlrParser;
import org.eclipse.xtext.parser.antlr.XtextTokenStream;
import org.eclipse.xtext.parser.antlr.XtextTokenStream.HiddenTokens;
import org.eclipse.xtext.parser.antlr.AntlrDatatypeRuleToken;
import org.dslintegration.services.MRulesGrammarAccess;



import org.antlr.runtime.*;
import java.util.Stack;
import java.util.List;
import java.util.ArrayList;

@SuppressWarnings("all")
public class InternalMRulesParser extends AbstractInternalAntlrParser {
    public static final String[] tokenNames = new String[] {
        "<invalid>", "<EOR>", "<DOWN>", "<UP>", "RULE_STRING", "RULE_ID", "RULE_INT", "RULE_ML_COMMENT", "RULE_SL_COMMENT", "RULE_WS", "RULE_ANY_OTHER", "'input left'", "';'", "'input right'", "'default dominant '", "'LEFT'", "'RIGHT'", "'.'", "'dominant'", "'guard'", "'source'", "'target'", "'create'", "'output'", "'merge'", "'{'", "'}'", "'do'", "'as'", "'+'", "'='"
    };
    public static final int RULE_ID=5;
    public static final int T__29=29;
    public static final int T__28=28;
    public static final int T__27=27;
    public static final int T__26=26;
    public static final int T__25=25;
    public static final int T__24=24;
    public static final int T__23=23;
    public static final int T__22=22;
    public static final int RULE_ANY_OTHER=10;
    public static final int T__21=21;
    public static final int T__20=20;
    public static final int RULE_SL_COMMENT=8;
    public static final int EOF=-1;
    public static final int RULE_ML_COMMENT=7;
    public static final int T__30=30;
    public static final int T__19=19;
    public static final int RULE_STRING=4;
    public static final int T__16=16;
    public static final int T__15=15;
    public static final int T__18=18;
    public static final int T__17=17;
    public static final int T__12=12;
    public static final int T__11=11;
    public static final int T__14=14;
    public static final int T__13=13;
    public static final int RULE_INT=6;
    public static final int RULE_WS=9;

    // delegates
    // delegators


        public InternalMRulesParser(TokenStream input) {
            this(input, new RecognizerSharedState());
        }
        public InternalMRulesParser(TokenStream input, RecognizerSharedState state) {
            super(input, state);
             
        }
        

    public String[] getTokenNames() { return InternalMRulesParser.tokenNames; }
    public String getGrammarFileName() { return "../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g"; }



     	private MRulesGrammarAccess grammarAccess;
     	
        public InternalMRulesParser(TokenStream input, MRulesGrammarAccess grammarAccess) {
            this(input);
            this.grammarAccess = grammarAccess;
            registerRules(grammarAccess.getGrammar());
        }
        
        @Override
        protected String getFirstRuleName() {
        	return "MergeRules";	
       	}
       	
       	@Override
       	protected MRulesGrammarAccess getGrammarAccess() {
       		return grammarAccess;
       	}



    // $ANTLR start "entryRuleMergeRules"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:67:1: entryRuleMergeRules returns [EObject current=null] : iv_ruleMergeRules= ruleMergeRules EOF ;
    public final EObject entryRuleMergeRules() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleMergeRules = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:68:2: (iv_ruleMergeRules= ruleMergeRules EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:69:2: iv_ruleMergeRules= ruleMergeRules EOF
            {
             newCompositeNode(grammarAccess.getMergeRulesRule()); 
            pushFollow(FOLLOW_ruleMergeRules_in_entryRuleMergeRules75);
            iv_ruleMergeRules=ruleMergeRules();

            state._fsp--;

             current =iv_ruleMergeRules; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleMergeRules85); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleMergeRules"


    // $ANTLR start "ruleMergeRules"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:76:1: ruleMergeRules returns [EObject current=null] : (otherlv_0= 'input left' ( (lv_metamodelPathLeft_1_0= RULE_STRING ) ) otherlv_2= ';' otherlv_3= 'input right' ( (lv_metamodelPathRight_4_0= RULE_STRING ) ) otherlv_5= ';' ( ( (lv_defaultDominant_6_0= 'default dominant ' ) ) (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' ) otherlv_9= ';' )? ( (lv_rules_10_0= ruleRule ) )+ ) ;
    public final EObject ruleMergeRules() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_metamodelPathLeft_1_0=null;
        Token otherlv_2=null;
        Token otherlv_3=null;
        Token lv_metamodelPathRight_4_0=null;
        Token otherlv_5=null;
        Token lv_defaultDominant_6_0=null;
        Token otherlv_7=null;
        Token otherlv_8=null;
        Token otherlv_9=null;
        EObject lv_rules_10_0 = null;


         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:79:28: ( (otherlv_0= 'input left' ( (lv_metamodelPathLeft_1_0= RULE_STRING ) ) otherlv_2= ';' otherlv_3= 'input right' ( (lv_metamodelPathRight_4_0= RULE_STRING ) ) otherlv_5= ';' ( ( (lv_defaultDominant_6_0= 'default dominant ' ) ) (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' ) otherlv_9= ';' )? ( (lv_rules_10_0= ruleRule ) )+ ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:80:1: (otherlv_0= 'input left' ( (lv_metamodelPathLeft_1_0= RULE_STRING ) ) otherlv_2= ';' otherlv_3= 'input right' ( (lv_metamodelPathRight_4_0= RULE_STRING ) ) otherlv_5= ';' ( ( (lv_defaultDominant_6_0= 'default dominant ' ) ) (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' ) otherlv_9= ';' )? ( (lv_rules_10_0= ruleRule ) )+ )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:80:1: (otherlv_0= 'input left' ( (lv_metamodelPathLeft_1_0= RULE_STRING ) ) otherlv_2= ';' otherlv_3= 'input right' ( (lv_metamodelPathRight_4_0= RULE_STRING ) ) otherlv_5= ';' ( ( (lv_defaultDominant_6_0= 'default dominant ' ) ) (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' ) otherlv_9= ';' )? ( (lv_rules_10_0= ruleRule ) )+ )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:80:3: otherlv_0= 'input left' ( (lv_metamodelPathLeft_1_0= RULE_STRING ) ) otherlv_2= ';' otherlv_3= 'input right' ( (lv_metamodelPathRight_4_0= RULE_STRING ) ) otherlv_5= ';' ( ( (lv_defaultDominant_6_0= 'default dominant ' ) ) (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' ) otherlv_9= ';' )? ( (lv_rules_10_0= ruleRule ) )+
            {
            otherlv_0=(Token)match(input,11,FOLLOW_11_in_ruleMergeRules122); 

                	newLeafNode(otherlv_0, grammarAccess.getMergeRulesAccess().getInputLeftKeyword_0());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:84:1: ( (lv_metamodelPathLeft_1_0= RULE_STRING ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:85:1: (lv_metamodelPathLeft_1_0= RULE_STRING )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:85:1: (lv_metamodelPathLeft_1_0= RULE_STRING )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:86:3: lv_metamodelPathLeft_1_0= RULE_STRING
            {
            lv_metamodelPathLeft_1_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleMergeRules139); 

            			newLeafNode(lv_metamodelPathLeft_1_0, grammarAccess.getMergeRulesAccess().getMetamodelPathLeftSTRINGTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMergeRulesRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"metamodelPathLeft",
                    		lv_metamodelPathLeft_1_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_2=(Token)match(input,12,FOLLOW_12_in_ruleMergeRules156); 

                	newLeafNode(otherlv_2, grammarAccess.getMergeRulesAccess().getSemicolonKeyword_2());
                
            otherlv_3=(Token)match(input,13,FOLLOW_13_in_ruleMergeRules168); 

                	newLeafNode(otherlv_3, grammarAccess.getMergeRulesAccess().getInputRightKeyword_3());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:110:1: ( (lv_metamodelPathRight_4_0= RULE_STRING ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:111:1: (lv_metamodelPathRight_4_0= RULE_STRING )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:111:1: (lv_metamodelPathRight_4_0= RULE_STRING )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:112:3: lv_metamodelPathRight_4_0= RULE_STRING
            {
            lv_metamodelPathRight_4_0=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleMergeRules185); 

            			newLeafNode(lv_metamodelPathRight_4_0, grammarAccess.getMergeRulesAccess().getMetamodelPathRightSTRINGTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getMergeRulesRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"metamodelPathRight",
                    		lv_metamodelPathRight_4_0, 
                    		"STRING");
            	    

            }


            }

            otherlv_5=(Token)match(input,12,FOLLOW_12_in_ruleMergeRules202); 

                	newLeafNode(otherlv_5, grammarAccess.getMergeRulesAccess().getSemicolonKeyword_5());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:132:1: ( ( (lv_defaultDominant_6_0= 'default dominant ' ) ) (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' ) otherlv_9= ';' )?
            int alt2=2;
            int LA2_0 = input.LA(1);

            if ( (LA2_0==14) ) {
                alt2=1;
            }
            switch (alt2) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:132:2: ( (lv_defaultDominant_6_0= 'default dominant ' ) ) (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' ) otherlv_9= ';'
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:132:2: ( (lv_defaultDominant_6_0= 'default dominant ' ) )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:133:1: (lv_defaultDominant_6_0= 'default dominant ' )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:133:1: (lv_defaultDominant_6_0= 'default dominant ' )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:134:3: lv_defaultDominant_6_0= 'default dominant '
                    {
                    lv_defaultDominant_6_0=(Token)match(input,14,FOLLOW_14_in_ruleMergeRules221); 

                            newLeafNode(lv_defaultDominant_6_0, grammarAccess.getMergeRulesAccess().getDefaultDominantDefaultDominantKeyword_6_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getMergeRulesRule());
                    	        }
                           		setWithLastConsumed(current, "defaultDominant", lv_defaultDominant_6_0, "default dominant ");
                    	    

                    }


                    }

                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:147:2: (otherlv_7= 'LEFT' | otherlv_8= 'RIGHT' )
                    int alt1=2;
                    int LA1_0 = input.LA(1);

                    if ( (LA1_0==15) ) {
                        alt1=1;
                    }
                    else if ( (LA1_0==16) ) {
                        alt1=2;
                    }
                    else {
                        NoViableAltException nvae =
                            new NoViableAltException("", 1, 0, input);

                        throw nvae;
                    }
                    switch (alt1) {
                        case 1 :
                            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:147:4: otherlv_7= 'LEFT'
                            {
                            otherlv_7=(Token)match(input,15,FOLLOW_15_in_ruleMergeRules247); 

                                	newLeafNode(otherlv_7, grammarAccess.getMergeRulesAccess().getLEFTKeyword_6_1_0());
                                

                            }
                            break;
                        case 2 :
                            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:152:7: otherlv_8= 'RIGHT'
                            {
                            otherlv_8=(Token)match(input,16,FOLLOW_16_in_ruleMergeRules265); 

                                	newLeafNode(otherlv_8, grammarAccess.getMergeRulesAccess().getRIGHTKeyword_6_1_1());
                                

                            }
                            break;

                    }

                    otherlv_9=(Token)match(input,12,FOLLOW_12_in_ruleMergeRules278); 

                        	newLeafNode(otherlv_9, grammarAccess.getMergeRulesAccess().getSemicolonKeyword_6_2());
                        

                    }
                    break;

            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:160:3: ( (lv_rules_10_0= ruleRule ) )+
            int cnt3=0;
            loop3:
            do {
                int alt3=2;
                int LA3_0 = input.LA(1);

                if ( (LA3_0==24) ) {
                    alt3=1;
                }


                switch (alt3) {
            	case 1 :
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:161:1: (lv_rules_10_0= ruleRule )
            	    {
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:161:1: (lv_rules_10_0= ruleRule )
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:162:3: lv_rules_10_0= ruleRule
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getMergeRulesAccess().getRulesRuleParserRuleCall_7_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleRule_in_ruleMergeRules301);
            	    lv_rules_10_0=ruleRule();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getMergeRulesRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"rules",
            	            		lv_rules_10_0, 
            	            		"Rule");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    if ( cnt3 >= 1 ) break loop3;
                        EarlyExitException eee =
                            new EarlyExitException(3, input);
                        throw eee;
                }
                cnt3++;
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleMergeRules"


    // $ANTLR start "entryRuleQName"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:186:1: entryRuleQName returns [String current=null] : iv_ruleQName= ruleQName EOF ;
    public final String entryRuleQName() throws RecognitionException {
        String current = null;

        AntlrDatatypeRuleToken iv_ruleQName = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:187:2: (iv_ruleQName= ruleQName EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:188:2: iv_ruleQName= ruleQName EOF
            {
             newCompositeNode(grammarAccess.getQNameRule()); 
            pushFollow(FOLLOW_ruleQName_in_entryRuleQName339);
            iv_ruleQName=ruleQName();

            state._fsp--;

             current =iv_ruleQName.getText(); 
            match(input,EOF,FOLLOW_EOF_in_entryRuleQName350); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleQName"


    // $ANTLR start "ruleQName"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:195:1: ruleQName returns [AntlrDatatypeRuleToken current=new AntlrDatatypeRuleToken()] : (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) ;
    public final AntlrDatatypeRuleToken ruleQName() throws RecognitionException {
        AntlrDatatypeRuleToken current = new AntlrDatatypeRuleToken();

        Token this_ID_0=null;
        Token kw=null;
        Token this_ID_2=null;

         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:198:28: ( (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:199:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:199:1: (this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )* )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:199:6: this_ID_0= RULE_ID (kw= '.' this_ID_2= RULE_ID )*
            {
            this_ID_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQName390); 

            		current.merge(this_ID_0);
                
             
                newLeafNode(this_ID_0, grammarAccess.getQNameAccess().getIDTerminalRuleCall_0()); 
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:206:1: (kw= '.' this_ID_2= RULE_ID )*
            loop4:
            do {
                int alt4=2;
                int LA4_0 = input.LA(1);

                if ( (LA4_0==17) ) {
                    alt4=1;
                }


                switch (alt4) {
            	case 1 :
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:207:2: kw= '.' this_ID_2= RULE_ID
            	    {
            	    kw=(Token)match(input,17,FOLLOW_17_in_ruleQName409); 

            	            current.merge(kw);
            	            newLeafNode(kw, grammarAccess.getQNameAccess().getFullStopKeyword_1_0()); 
            	        
            	    this_ID_2=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleQName424); 

            	    		current.merge(this_ID_2);
            	        
            	     
            	        newLeafNode(this_ID_2, grammarAccess.getQNameAccess().getIDTerminalRuleCall_1_1()); 
            	        

            	    }
            	    break;

            	default :
            	    break loop4;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleQName"


    // $ANTLR start "entryRuleSource"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:229:1: entryRuleSource returns [EObject current=null] : iv_ruleSource= ruleSource EOF ;
    public final EObject entryRuleSource() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleSource = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:230:2: (iv_ruleSource= ruleSource EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:231:2: iv_ruleSource= ruleSource EOF
            {
             newCompositeNode(grammarAccess.getSourceRule()); 
            pushFollow(FOLLOW_ruleSource_in_entryRuleSource473);
            iv_ruleSource=ruleSource();

            state._fsp--;

             current =iv_ruleSource; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleSource483); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleSource"


    // $ANTLR start "ruleSource"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:238:1: ruleSource returns [EObject current=null] : ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'source' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) ) ;
    public final EObject ruleSource() throws RecognitionException {
        EObject current = null;

        Token lv_dominant_0_0=null;
        Token lv_guard_1_0=null;
        Token otherlv_2=null;
        Token lv_name_4_0=null;
        AntlrDatatypeRuleToken lv_qualifiedName_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:241:28: ( ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'source' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:242:1: ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'source' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:242:1: ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'source' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:242:2: ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'source' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:242:2: ( (lv_dominant_0_0= 'dominant' ) )?
            int alt5=2;
            int LA5_0 = input.LA(1);

            if ( (LA5_0==18) ) {
                alt5=1;
            }
            switch (alt5) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:243:1: (lv_dominant_0_0= 'dominant' )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:243:1: (lv_dominant_0_0= 'dominant' )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:244:3: lv_dominant_0_0= 'dominant'
                    {
                    lv_dominant_0_0=(Token)match(input,18,FOLLOW_18_in_ruleSource526); 

                            newLeafNode(lv_dominant_0_0, grammarAccess.getSourceAccess().getDominantDominantKeyword_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSourceRule());
                    	        }
                           		setWithLastConsumed(current, "dominant", true, "dominant");
                    	    

                    }


                    }
                    break;

            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:257:3: ( (lv_guard_1_0= 'guard' ) )?
            int alt6=2;
            int LA6_0 = input.LA(1);

            if ( (LA6_0==19) ) {
                alt6=1;
            }
            switch (alt6) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:258:1: (lv_guard_1_0= 'guard' )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:258:1: (lv_guard_1_0= 'guard' )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:259:3: lv_guard_1_0= 'guard'
                    {
                    lv_guard_1_0=(Token)match(input,19,FOLLOW_19_in_ruleSource558); 

                            newLeafNode(lv_guard_1_0, grammarAccess.getSourceAccess().getGuardGuardKeyword_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getSourceRule());
                    	        }
                           		setWithLastConsumed(current, "guard", true, "guard");
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,20,FOLLOW_20_in_ruleSource584); 

                	newLeafNode(otherlv_2, grammarAccess.getSourceAccess().getSourceKeyword_2());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:276:1: ( (lv_qualifiedName_3_0= ruleQName ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:277:1: (lv_qualifiedName_3_0= ruleQName )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:277:1: (lv_qualifiedName_3_0= ruleQName )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:278:3: lv_qualifiedName_3_0= ruleQName
            {
             
            	        newCompositeNode(grammarAccess.getSourceAccess().getQualifiedNameQNameParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleQName_in_ruleSource605);
            lv_qualifiedName_3_0=ruleQName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getSourceRule());
            	        }
                   		set(
                   			current, 
                   			"qualifiedName",
                    		lv_qualifiedName_3_0, 
                    		"QName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:294:2: ( (lv_name_4_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:295:1: (lv_name_4_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:295:1: (lv_name_4_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:296:3: lv_name_4_0= RULE_ID
            {
            lv_name_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleSource622); 

            			newLeafNode(lv_name_4_0, grammarAccess.getSourceAccess().getNameIDTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getSourceRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_4_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleSource"


    // $ANTLR start "entryRuleTarget"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:320:1: entryRuleTarget returns [EObject current=null] : iv_ruleTarget= ruleTarget EOF ;
    public final EObject entryRuleTarget() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleTarget = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:321:2: (iv_ruleTarget= ruleTarget EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:322:2: iv_ruleTarget= ruleTarget EOF
            {
             newCompositeNode(grammarAccess.getTargetRule()); 
            pushFollow(FOLLOW_ruleTarget_in_entryRuleTarget663);
            iv_ruleTarget=ruleTarget();

            state._fsp--;

             current =iv_ruleTarget; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleTarget673); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleTarget"


    // $ANTLR start "ruleTarget"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:329:1: ruleTarget returns [EObject current=null] : ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'target' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) ) ;
    public final EObject ruleTarget() throws RecognitionException {
        EObject current = null;

        Token lv_dominant_0_0=null;
        Token lv_guard_1_0=null;
        Token otherlv_2=null;
        Token lv_name_4_0=null;
        AntlrDatatypeRuleToken lv_qualifiedName_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:332:28: ( ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'target' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:333:1: ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'target' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:333:1: ( ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'target' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:333:2: ( (lv_dominant_0_0= 'dominant' ) )? ( (lv_guard_1_0= 'guard' ) )? otherlv_2= 'target' ( (lv_qualifiedName_3_0= ruleQName ) ) ( (lv_name_4_0= RULE_ID ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:333:2: ( (lv_dominant_0_0= 'dominant' ) )?
            int alt7=2;
            int LA7_0 = input.LA(1);

            if ( (LA7_0==18) ) {
                alt7=1;
            }
            switch (alt7) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:334:1: (lv_dominant_0_0= 'dominant' )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:334:1: (lv_dominant_0_0= 'dominant' )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:335:3: lv_dominant_0_0= 'dominant'
                    {
                    lv_dominant_0_0=(Token)match(input,18,FOLLOW_18_in_ruleTarget716); 

                            newLeafNode(lv_dominant_0_0, grammarAccess.getTargetAccess().getDominantDominantKeyword_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getTargetRule());
                    	        }
                           		setWithLastConsumed(current, "dominant", true, "dominant");
                    	    

                    }


                    }
                    break;

            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:348:3: ( (lv_guard_1_0= 'guard' ) )?
            int alt8=2;
            int LA8_0 = input.LA(1);

            if ( (LA8_0==19) ) {
                alt8=1;
            }
            switch (alt8) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:349:1: (lv_guard_1_0= 'guard' )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:349:1: (lv_guard_1_0= 'guard' )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:350:3: lv_guard_1_0= 'guard'
                    {
                    lv_guard_1_0=(Token)match(input,19,FOLLOW_19_in_ruleTarget748); 

                            newLeafNode(lv_guard_1_0, grammarAccess.getTargetAccess().getGuardGuardKeyword_1_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getTargetRule());
                    	        }
                           		setWithLastConsumed(current, "guard", true, "guard");
                    	    

                    }


                    }
                    break;

            }

            otherlv_2=(Token)match(input,21,FOLLOW_21_in_ruleTarget774); 

                	newLeafNode(otherlv_2, grammarAccess.getTargetAccess().getTargetKeyword_2());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:367:1: ( (lv_qualifiedName_3_0= ruleQName ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:368:1: (lv_qualifiedName_3_0= ruleQName )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:368:1: (lv_qualifiedName_3_0= ruleQName )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:369:3: lv_qualifiedName_3_0= ruleQName
            {
             
            	        newCompositeNode(grammarAccess.getTargetAccess().getQualifiedNameQNameParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleQName_in_ruleTarget795);
            lv_qualifiedName_3_0=ruleQName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getTargetRule());
            	        }
                   		set(
                   			current, 
                   			"qualifiedName",
                    		lv_qualifiedName_3_0, 
                    		"QName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:385:2: ( (lv_name_4_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:386:1: (lv_name_4_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:386:1: (lv_name_4_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:387:3: lv_name_4_0= RULE_ID
            {
            lv_name_4_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleTarget812); 

            			newLeafNode(lv_name_4_0, grammarAccess.getTargetAccess().getNameIDTerminalRuleCall_4_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getTargetRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_4_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleTarget"


    // $ANTLR start "entryRuleOutput"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:411:1: entryRuleOutput returns [EObject current=null] : iv_ruleOutput= ruleOutput EOF ;
    public final EObject entryRuleOutput() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleOutput = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:412:2: (iv_ruleOutput= ruleOutput EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:413:2: iv_ruleOutput= ruleOutput EOF
            {
             newCompositeNode(grammarAccess.getOutputRule()); 
            pushFollow(FOLLOW_ruleOutput_in_entryRuleOutput853);
            iv_ruleOutput=ruleOutput();

            state._fsp--;

             current =iv_ruleOutput; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleOutput863); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleOutput"


    // $ANTLR start "ruleOutput"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:420:1: ruleOutput returns [EObject current=null] : ( ( (lv_create_0_0= 'create' ) )? otherlv_1= 'output' ( (lv_qualifiedName_2_0= ruleQName ) ) ( (lv_name_3_0= RULE_ID ) ) ) ;
    public final EObject ruleOutput() throws RecognitionException {
        EObject current = null;

        Token lv_create_0_0=null;
        Token otherlv_1=null;
        Token lv_name_3_0=null;
        AntlrDatatypeRuleToken lv_qualifiedName_2_0 = null;


         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:423:28: ( ( ( (lv_create_0_0= 'create' ) )? otherlv_1= 'output' ( (lv_qualifiedName_2_0= ruleQName ) ) ( (lv_name_3_0= RULE_ID ) ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:424:1: ( ( (lv_create_0_0= 'create' ) )? otherlv_1= 'output' ( (lv_qualifiedName_2_0= ruleQName ) ) ( (lv_name_3_0= RULE_ID ) ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:424:1: ( ( (lv_create_0_0= 'create' ) )? otherlv_1= 'output' ( (lv_qualifiedName_2_0= ruleQName ) ) ( (lv_name_3_0= RULE_ID ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:424:2: ( (lv_create_0_0= 'create' ) )? otherlv_1= 'output' ( (lv_qualifiedName_2_0= ruleQName ) ) ( (lv_name_3_0= RULE_ID ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:424:2: ( (lv_create_0_0= 'create' ) )?
            int alt9=2;
            int LA9_0 = input.LA(1);

            if ( (LA9_0==22) ) {
                alt9=1;
            }
            switch (alt9) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:425:1: (lv_create_0_0= 'create' )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:425:1: (lv_create_0_0= 'create' )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:426:3: lv_create_0_0= 'create'
                    {
                    lv_create_0_0=(Token)match(input,22,FOLLOW_22_in_ruleOutput906); 

                            newLeafNode(lv_create_0_0, grammarAccess.getOutputAccess().getCreateCreateKeyword_0_0());
                        

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getOutputRule());
                    	        }
                           		setWithLastConsumed(current, "create", true, "create");
                    	    

                    }


                    }
                    break;

            }

            otherlv_1=(Token)match(input,23,FOLLOW_23_in_ruleOutput932); 

                	newLeafNode(otherlv_1, grammarAccess.getOutputAccess().getOutputKeyword_1());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:443:1: ( (lv_qualifiedName_2_0= ruleQName ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:444:1: (lv_qualifiedName_2_0= ruleQName )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:444:1: (lv_qualifiedName_2_0= ruleQName )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:445:3: lv_qualifiedName_2_0= ruleQName
            {
             
            	        newCompositeNode(grammarAccess.getOutputAccess().getQualifiedNameQNameParserRuleCall_2_0()); 
            	    
            pushFollow(FOLLOW_ruleQName_in_ruleOutput953);
            lv_qualifiedName_2_0=ruleQName();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getOutputRule());
            	        }
                   		set(
                   			current, 
                   			"qualifiedName",
                    		lv_qualifiedName_2_0, 
                    		"QName");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:461:2: ( (lv_name_3_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:462:1: (lv_name_3_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:462:1: (lv_name_3_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:463:3: lv_name_3_0= RULE_ID
            {
            lv_name_3_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleOutput970); 

            			newLeafNode(lv_name_3_0, grammarAccess.getOutputAccess().getNameIDTerminalRuleCall_3_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getOutputRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"name",
                    		lv_name_3_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleOutput"


    // $ANTLR start "entryRuleRule"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:487:1: entryRuleRule returns [EObject current=null] : iv_ruleRule= ruleRule EOF ;
    public final EObject entryRuleRule() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRule = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:488:2: (iv_ruleRule= ruleRule EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:489:2: iv_ruleRule= ruleRule EOF
            {
             newCompositeNode(grammarAccess.getRuleRule()); 
            pushFollow(FOLLOW_ruleRule_in_entryRuleRule1011);
            iv_ruleRule=ruleRule();

            state._fsp--;

             current =iv_ruleRule; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRule1021); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRule"


    // $ANTLR start "ruleRule"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:496:1: ruleRule returns [EObject current=null] : (otherlv_0= 'merge' ( (lv_ruleName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_source_3_0= ruleSource ) ) otherlv_4= ';' ( (lv_target_5_0= ruleTarget ) ) otherlv_6= ';' ( ( (lv_output_7_0= ruleOutput ) ) otherlv_8= ';' )? ( (lv_statements_9_0= ruleRuleStatement ) )* otherlv_10= '}' ) ;
    public final EObject ruleRule() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_ruleName_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token otherlv_8=null;
        Token otherlv_10=null;
        EObject lv_source_3_0 = null;

        EObject lv_target_5_0 = null;

        EObject lv_output_7_0 = null;

        EObject lv_statements_9_0 = null;


         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:499:28: ( (otherlv_0= 'merge' ( (lv_ruleName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_source_3_0= ruleSource ) ) otherlv_4= ';' ( (lv_target_5_0= ruleTarget ) ) otherlv_6= ';' ( ( (lv_output_7_0= ruleOutput ) ) otherlv_8= ';' )? ( (lv_statements_9_0= ruleRuleStatement ) )* otherlv_10= '}' ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:500:1: (otherlv_0= 'merge' ( (lv_ruleName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_source_3_0= ruleSource ) ) otherlv_4= ';' ( (lv_target_5_0= ruleTarget ) ) otherlv_6= ';' ( ( (lv_output_7_0= ruleOutput ) ) otherlv_8= ';' )? ( (lv_statements_9_0= ruleRuleStatement ) )* otherlv_10= '}' )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:500:1: (otherlv_0= 'merge' ( (lv_ruleName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_source_3_0= ruleSource ) ) otherlv_4= ';' ( (lv_target_5_0= ruleTarget ) ) otherlv_6= ';' ( ( (lv_output_7_0= ruleOutput ) ) otherlv_8= ';' )? ( (lv_statements_9_0= ruleRuleStatement ) )* otherlv_10= '}' )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:500:3: otherlv_0= 'merge' ( (lv_ruleName_1_0= RULE_ID ) ) otherlv_2= '{' ( (lv_source_3_0= ruleSource ) ) otherlv_4= ';' ( (lv_target_5_0= ruleTarget ) ) otherlv_6= ';' ( ( (lv_output_7_0= ruleOutput ) ) otherlv_8= ';' )? ( (lv_statements_9_0= ruleRuleStatement ) )* otherlv_10= '}'
            {
            otherlv_0=(Token)match(input,24,FOLLOW_24_in_ruleRule1058); 

                	newLeafNode(otherlv_0, grammarAccess.getRuleAccess().getMergeKeyword_0());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:504:1: ( (lv_ruleName_1_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:505:1: (lv_ruleName_1_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:505:1: (lv_ruleName_1_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:506:3: lv_ruleName_1_0= RULE_ID
            {
            lv_ruleName_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRule1075); 

            			newLeafNode(lv_ruleName_1_0, grammarAccess.getRuleAccess().getRuleNameIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRuleRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"ruleName",
                    		lv_ruleName_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,25,FOLLOW_25_in_ruleRule1092); 

                	newLeafNode(otherlv_2, grammarAccess.getRuleAccess().getLeftCurlyBracketKeyword_2());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:526:1: ( (lv_source_3_0= ruleSource ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:527:1: (lv_source_3_0= ruleSource )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:527:1: (lv_source_3_0= ruleSource )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:528:3: lv_source_3_0= ruleSource
            {
             
            	        newCompositeNode(grammarAccess.getRuleAccess().getSourceSourceParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleSource_in_ruleRule1113);
            lv_source_3_0=ruleSource();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRuleRule());
            	        }
                   		set(
                   			current, 
                   			"source",
                    		lv_source_3_0, 
                    		"Source");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_4=(Token)match(input,12,FOLLOW_12_in_ruleRule1125); 

                	newLeafNode(otherlv_4, grammarAccess.getRuleAccess().getSemicolonKeyword_4());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:548:1: ( (lv_target_5_0= ruleTarget ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:549:1: (lv_target_5_0= ruleTarget )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:549:1: (lv_target_5_0= ruleTarget )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:550:3: lv_target_5_0= ruleTarget
            {
             
            	        newCompositeNode(grammarAccess.getRuleAccess().getTargetTargetParserRuleCall_5_0()); 
            	    
            pushFollow(FOLLOW_ruleTarget_in_ruleRule1146);
            lv_target_5_0=ruleTarget();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRuleRule());
            	        }
                   		set(
                   			current, 
                   			"target",
                    		lv_target_5_0, 
                    		"Target");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            otherlv_6=(Token)match(input,12,FOLLOW_12_in_ruleRule1158); 

                	newLeafNode(otherlv_6, grammarAccess.getRuleAccess().getSemicolonKeyword_6());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:570:1: ( ( (lv_output_7_0= ruleOutput ) ) otherlv_8= ';' )?
            int alt10=2;
            int LA10_0 = input.LA(1);

            if ( ((LA10_0>=22 && LA10_0<=23)) ) {
                alt10=1;
            }
            switch (alt10) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:570:2: ( (lv_output_7_0= ruleOutput ) ) otherlv_8= ';'
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:570:2: ( (lv_output_7_0= ruleOutput ) )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:571:1: (lv_output_7_0= ruleOutput )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:571:1: (lv_output_7_0= ruleOutput )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:572:3: lv_output_7_0= ruleOutput
                    {
                     
                    	        newCompositeNode(grammarAccess.getRuleAccess().getOutputOutputParserRuleCall_7_0_0()); 
                    	    
                    pushFollow(FOLLOW_ruleOutput_in_ruleRule1180);
                    lv_output_7_0=ruleOutput();

                    state._fsp--;


                    	        if (current==null) {
                    	            current = createModelElementForParent(grammarAccess.getRuleRule());
                    	        }
                           		set(
                           			current, 
                           			"output",
                            		lv_output_7_0, 
                            		"Output");
                    	        afterParserOrEnumRuleCall();
                    	    

                    }


                    }

                    otherlv_8=(Token)match(input,12,FOLLOW_12_in_ruleRule1192); 

                        	newLeafNode(otherlv_8, grammarAccess.getRuleAccess().getSemicolonKeyword_7_1());
                        

                    }
                    break;

            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:592:3: ( (lv_statements_9_0= ruleRuleStatement ) )*
            loop11:
            do {
                int alt11=2;
                int LA11_0 = input.LA(1);

                if ( (LA11_0==27) ) {
                    alt11=1;
                }


                switch (alt11) {
            	case 1 :
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:593:1: (lv_statements_9_0= ruleRuleStatement )
            	    {
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:593:1: (lv_statements_9_0= ruleRuleStatement )
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:594:3: lv_statements_9_0= ruleRuleStatement
            	    {
            	     
            	    	        newCompositeNode(grammarAccess.getRuleAccess().getStatementsRuleStatementParserRuleCall_8_0()); 
            	    	    
            	    pushFollow(FOLLOW_ruleRuleStatement_in_ruleRule1215);
            	    lv_statements_9_0=ruleRuleStatement();

            	    state._fsp--;


            	    	        if (current==null) {
            	    	            current = createModelElementForParent(grammarAccess.getRuleRule());
            	    	        }
            	           		add(
            	           			current, 
            	           			"statements",
            	            		lv_statements_9_0, 
            	            		"RuleStatement");
            	    	        afterParserOrEnumRuleCall();
            	    	    

            	    }


            	    }
            	    break;

            	default :
            	    break loop11;
                }
            } while (true);

            otherlv_10=(Token)match(input,26,FOLLOW_26_in_ruleRule1228); 

                	newLeafNode(otherlv_10, grammarAccess.getRuleAccess().getRightCurlyBracketKeyword_9());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRule"


    // $ANTLR start "entryRuleRuleStatement"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:622:1: entryRuleRuleStatement returns [EObject current=null] : iv_ruleRuleStatement= ruleRuleStatement EOF ;
    public final EObject entryRuleRuleStatement() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRuleStatement = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:623:2: (iv_ruleRuleStatement= ruleRuleStatement EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:624:2: iv_ruleRuleStatement= ruleRuleStatement EOF
            {
             newCompositeNode(grammarAccess.getRuleStatementRule()); 
            pushFollow(FOLLOW_ruleRuleStatement_in_entryRuleRuleStatement1264);
            iv_ruleRuleStatement=ruleRuleStatement();

            state._fsp--;

             current =iv_ruleRuleStatement; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRuleStatement1274); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRuleStatement"


    // $ANTLR start "ruleRuleStatement"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:631:1: ruleRuleStatement returns [EObject current=null] : (otherlv_0= 'do' ( (lv_statement_1_0= RULE_ID ) ) otherlv_2= 'as' ( (lv_expession_3_0= ruleExpression ) ) (otherlv_4= 'output' ( (otherlv_5= RULE_ID ) ) otherlv_6= '.' ( (lv_outputAttribute_7_0= RULE_ID ) ) )? otherlv_8= ';' ) ;
    public final EObject ruleRuleStatement() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token lv_statement_1_0=null;
        Token otherlv_2=null;
        Token otherlv_4=null;
        Token otherlv_5=null;
        Token otherlv_6=null;
        Token lv_outputAttribute_7_0=null;
        Token otherlv_8=null;
        EObject lv_expession_3_0 = null;


         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:634:28: ( (otherlv_0= 'do' ( (lv_statement_1_0= RULE_ID ) ) otherlv_2= 'as' ( (lv_expession_3_0= ruleExpression ) ) (otherlv_4= 'output' ( (otherlv_5= RULE_ID ) ) otherlv_6= '.' ( (lv_outputAttribute_7_0= RULE_ID ) ) )? otherlv_8= ';' ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:635:1: (otherlv_0= 'do' ( (lv_statement_1_0= RULE_ID ) ) otherlv_2= 'as' ( (lv_expession_3_0= ruleExpression ) ) (otherlv_4= 'output' ( (otherlv_5= RULE_ID ) ) otherlv_6= '.' ( (lv_outputAttribute_7_0= RULE_ID ) ) )? otherlv_8= ';' )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:635:1: (otherlv_0= 'do' ( (lv_statement_1_0= RULE_ID ) ) otherlv_2= 'as' ( (lv_expession_3_0= ruleExpression ) ) (otherlv_4= 'output' ( (otherlv_5= RULE_ID ) ) otherlv_6= '.' ( (lv_outputAttribute_7_0= RULE_ID ) ) )? otherlv_8= ';' )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:635:3: otherlv_0= 'do' ( (lv_statement_1_0= RULE_ID ) ) otherlv_2= 'as' ( (lv_expession_3_0= ruleExpression ) ) (otherlv_4= 'output' ( (otherlv_5= RULE_ID ) ) otherlv_6= '.' ( (lv_outputAttribute_7_0= RULE_ID ) ) )? otherlv_8= ';'
            {
            otherlv_0=(Token)match(input,27,FOLLOW_27_in_ruleRuleStatement1311); 

                	newLeafNode(otherlv_0, grammarAccess.getRuleStatementAccess().getDoKeyword_0());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:639:1: ( (lv_statement_1_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:640:1: (lv_statement_1_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:640:1: (lv_statement_1_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:641:3: lv_statement_1_0= RULE_ID
            {
            lv_statement_1_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleStatement1328); 

            			newLeafNode(lv_statement_1_0, grammarAccess.getRuleStatementAccess().getStatementIDTerminalRuleCall_1_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRuleStatementRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"statement",
                    		lv_statement_1_0, 
                    		"ID");
            	    

            }


            }

            otherlv_2=(Token)match(input,28,FOLLOW_28_in_ruleRuleStatement1345); 

                	newLeafNode(otherlv_2, grammarAccess.getRuleStatementAccess().getAsKeyword_2());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:661:1: ( (lv_expession_3_0= ruleExpression ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:662:1: (lv_expession_3_0= ruleExpression )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:662:1: (lv_expession_3_0= ruleExpression )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:663:3: lv_expession_3_0= ruleExpression
            {
             
            	        newCompositeNode(grammarAccess.getRuleStatementAccess().getExpessionExpressionParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleExpression_in_ruleRuleStatement1366);
            lv_expession_3_0=ruleExpression();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getRuleStatementRule());
            	        }
                   		set(
                   			current, 
                   			"expession",
                    		lv_expession_3_0, 
                    		"Expression");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:679:2: (otherlv_4= 'output' ( (otherlv_5= RULE_ID ) ) otherlv_6= '.' ( (lv_outputAttribute_7_0= RULE_ID ) ) )?
            int alt12=2;
            int LA12_0 = input.LA(1);

            if ( (LA12_0==23) ) {
                alt12=1;
            }
            switch (alt12) {
                case 1 :
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:679:4: otherlv_4= 'output' ( (otherlv_5= RULE_ID ) ) otherlv_6= '.' ( (lv_outputAttribute_7_0= RULE_ID ) )
                    {
                    otherlv_4=(Token)match(input,23,FOLLOW_23_in_ruleRuleStatement1379); 

                        	newLeafNode(otherlv_4, grammarAccess.getRuleStatementAccess().getOutputKeyword_4_0());
                        
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:683:1: ( (otherlv_5= RULE_ID ) )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:684:1: (otherlv_5= RULE_ID )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:684:1: (otherlv_5= RULE_ID )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:685:3: otherlv_5= RULE_ID
                    {

                    			if (current==null) {
                    	            current = createModelElement(grammarAccess.getRuleStatementRule());
                    	        }
                            
                    otherlv_5=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleStatement1399); 

                    		newLeafNode(otherlv_5, grammarAccess.getRuleStatementAccess().getOutputOutputCrossReference_4_1_0()); 
                    	

                    }


                    }

                    otherlv_6=(Token)match(input,17,FOLLOW_17_in_ruleRuleStatement1411); 

                        	newLeafNode(otherlv_6, grammarAccess.getRuleStatementAccess().getFullStopKeyword_4_2());
                        
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:700:1: ( (lv_outputAttribute_7_0= RULE_ID ) )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:701:1: (lv_outputAttribute_7_0= RULE_ID )
                    {
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:701:1: (lv_outputAttribute_7_0= RULE_ID )
                    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:702:3: lv_outputAttribute_7_0= RULE_ID
                    {
                    lv_outputAttribute_7_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRuleStatement1428); 

                    			newLeafNode(lv_outputAttribute_7_0, grammarAccess.getRuleStatementAccess().getOutputAttributeIDTerminalRuleCall_4_3_0()); 
                    		

                    	        if (current==null) {
                    	            current = createModelElement(grammarAccess.getRuleStatementRule());
                    	        }
                           		setWithLastConsumed(
                           			current, 
                           			"outputAttribute",
                            		lv_outputAttribute_7_0, 
                            		"ID");
                    	    

                    }


                    }


                    }
                    break;

            }

            otherlv_8=(Token)match(input,12,FOLLOW_12_in_ruleRuleStatement1447); 

                	newLeafNode(otherlv_8, grammarAccess.getRuleStatementAccess().getSemicolonKeyword_5());
                

            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRuleStatement"


    // $ANTLR start "entryRuleExpression"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:730:1: entryRuleExpression returns [EObject current=null] : iv_ruleExpression= ruleExpression EOF ;
    public final EObject entryRuleExpression() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleExpression = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:731:2: (iv_ruleExpression= ruleExpression EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:732:2: iv_ruleExpression= ruleExpression EOF
            {
             newCompositeNode(grammarAccess.getExpressionRule()); 
            pushFollow(FOLLOW_ruleExpression_in_entryRuleExpression1483);
            iv_ruleExpression=ruleExpression();

            state._fsp--;

             current =iv_ruleExpression; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleExpression1493); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleExpression"


    // $ANTLR start "ruleExpression"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:739:1: ruleExpression returns [EObject current=null] : ( ( (lv_left_0_0= ruleLeftAttribute ) ) (otherlv_1= '+' ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING ) )* otherlv_4= '=' ( (lv_right_5_0= ruleRightAttribute ) ) (otherlv_6= '+' ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING ) )* ) ;
    public final EObject ruleExpression() throws RecognitionException {
        EObject current = null;

        Token otherlv_1=null;
        Token this_STRING_3=null;
        Token otherlv_4=null;
        Token otherlv_6=null;
        Token this_STRING_8=null;
        EObject lv_left_0_0 = null;

        EObject lv_left_2_0 = null;

        EObject lv_right_5_0 = null;

        EObject lv_right_7_0 = null;


         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:742:28: ( ( ( (lv_left_0_0= ruleLeftAttribute ) ) (otherlv_1= '+' ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING ) )* otherlv_4= '=' ( (lv_right_5_0= ruleRightAttribute ) ) (otherlv_6= '+' ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING ) )* ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:743:1: ( ( (lv_left_0_0= ruleLeftAttribute ) ) (otherlv_1= '+' ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING ) )* otherlv_4= '=' ( (lv_right_5_0= ruleRightAttribute ) ) (otherlv_6= '+' ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING ) )* )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:743:1: ( ( (lv_left_0_0= ruleLeftAttribute ) ) (otherlv_1= '+' ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING ) )* otherlv_4= '=' ( (lv_right_5_0= ruleRightAttribute ) ) (otherlv_6= '+' ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING ) )* )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:743:2: ( (lv_left_0_0= ruleLeftAttribute ) ) (otherlv_1= '+' ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING ) )* otherlv_4= '=' ( (lv_right_5_0= ruleRightAttribute ) ) (otherlv_6= '+' ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING ) )*
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:743:2: ( (lv_left_0_0= ruleLeftAttribute ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:744:1: (lv_left_0_0= ruleLeftAttribute )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:744:1: (lv_left_0_0= ruleLeftAttribute )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:745:3: lv_left_0_0= ruleLeftAttribute
            {
             
            	        newCompositeNode(grammarAccess.getExpressionAccess().getLeftLeftAttributeParserRuleCall_0_0()); 
            	    
            pushFollow(FOLLOW_ruleLeftAttribute_in_ruleExpression1539);
            lv_left_0_0=ruleLeftAttribute();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExpressionRule());
            	        }
                   		add(
                   			current, 
                   			"left",
                    		lv_left_0_0, 
                    		"LeftAttribute");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:761:2: (otherlv_1= '+' ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING ) )*
            loop14:
            do {
                int alt14=2;
                int LA14_0 = input.LA(1);

                if ( (LA14_0==29) ) {
                    alt14=1;
                }


                switch (alt14) {
            	case 1 :
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:761:4: otherlv_1= '+' ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING )
            	    {
            	    otherlv_1=(Token)match(input,29,FOLLOW_29_in_ruleExpression1552); 

            	        	newLeafNode(otherlv_1, grammarAccess.getExpressionAccess().getPlusSignKeyword_1_0());
            	        
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:765:1: ( ( (lv_left_2_0= ruleLeftAttribute ) ) | this_STRING_3= RULE_STRING )
            	    int alt13=2;
            	    int LA13_0 = input.LA(1);

            	    if ( (LA13_0==RULE_ID) ) {
            	        alt13=1;
            	    }
            	    else if ( (LA13_0==RULE_STRING) ) {
            	        alt13=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 13, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt13) {
            	        case 1 :
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:765:2: ( (lv_left_2_0= ruleLeftAttribute ) )
            	            {
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:765:2: ( (lv_left_2_0= ruleLeftAttribute ) )
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:766:1: (lv_left_2_0= ruleLeftAttribute )
            	            {
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:766:1: (lv_left_2_0= ruleLeftAttribute )
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:767:3: lv_left_2_0= ruleLeftAttribute
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getExpressionAccess().getLeftLeftAttributeParserRuleCall_1_1_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleLeftAttribute_in_ruleExpression1574);
            	            lv_left_2_0=ruleLeftAttribute();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getExpressionRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"left",
            	                    		lv_left_2_0, 
            	                    		"LeftAttribute");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:784:6: this_STRING_3= RULE_STRING
            	            {
            	            this_STRING_3=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleExpression1591); 
            	             
            	                newLeafNode(this_STRING_3, grammarAccess.getExpressionAccess().getSTRINGTerminalRuleCall_1_1_1()); 
            	                

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop14;
                }
            } while (true);

            otherlv_4=(Token)match(input,30,FOLLOW_30_in_ruleExpression1605); 

                	newLeafNode(otherlv_4, grammarAccess.getExpressionAccess().getEqualsSignKeyword_2());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:792:1: ( (lv_right_5_0= ruleRightAttribute ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:793:1: (lv_right_5_0= ruleRightAttribute )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:793:1: (lv_right_5_0= ruleRightAttribute )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:794:3: lv_right_5_0= ruleRightAttribute
            {
             
            	        newCompositeNode(grammarAccess.getExpressionAccess().getRightRightAttributeParserRuleCall_3_0()); 
            	    
            pushFollow(FOLLOW_ruleRightAttribute_in_ruleExpression1626);
            lv_right_5_0=ruleRightAttribute();

            state._fsp--;


            	        if (current==null) {
            	            current = createModelElementForParent(grammarAccess.getExpressionRule());
            	        }
                   		add(
                   			current, 
                   			"right",
                    		lv_right_5_0, 
                    		"RightAttribute");
            	        afterParserOrEnumRuleCall();
            	    

            }


            }

            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:810:2: (otherlv_6= '+' ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING ) )*
            loop16:
            do {
                int alt16=2;
                int LA16_0 = input.LA(1);

                if ( (LA16_0==29) ) {
                    alt16=1;
                }


                switch (alt16) {
            	case 1 :
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:810:4: otherlv_6= '+' ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING )
            	    {
            	    otherlv_6=(Token)match(input,29,FOLLOW_29_in_ruleExpression1639); 

            	        	newLeafNode(otherlv_6, grammarAccess.getExpressionAccess().getPlusSignKeyword_4_0());
            	        
            	    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:814:1: ( ( (lv_right_7_0= ruleRightAttribute ) ) | this_STRING_8= RULE_STRING )
            	    int alt15=2;
            	    int LA15_0 = input.LA(1);

            	    if ( (LA15_0==RULE_ID) ) {
            	        alt15=1;
            	    }
            	    else if ( (LA15_0==RULE_STRING) ) {
            	        alt15=2;
            	    }
            	    else {
            	        NoViableAltException nvae =
            	            new NoViableAltException("", 15, 0, input);

            	        throw nvae;
            	    }
            	    switch (alt15) {
            	        case 1 :
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:814:2: ( (lv_right_7_0= ruleRightAttribute ) )
            	            {
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:814:2: ( (lv_right_7_0= ruleRightAttribute ) )
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:815:1: (lv_right_7_0= ruleRightAttribute )
            	            {
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:815:1: (lv_right_7_0= ruleRightAttribute )
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:816:3: lv_right_7_0= ruleRightAttribute
            	            {
            	             
            	            	        newCompositeNode(grammarAccess.getExpressionAccess().getRightRightAttributeParserRuleCall_4_1_0_0()); 
            	            	    
            	            pushFollow(FOLLOW_ruleRightAttribute_in_ruleExpression1661);
            	            lv_right_7_0=ruleRightAttribute();

            	            state._fsp--;


            	            	        if (current==null) {
            	            	            current = createModelElementForParent(grammarAccess.getExpressionRule());
            	            	        }
            	                   		add(
            	                   			current, 
            	                   			"right",
            	                    		lv_right_7_0, 
            	                    		"RightAttribute");
            	            	        afterParserOrEnumRuleCall();
            	            	    

            	            }


            	            }


            	            }
            	            break;
            	        case 2 :
            	            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:833:6: this_STRING_8= RULE_STRING
            	            {
            	            this_STRING_8=(Token)match(input,RULE_STRING,FOLLOW_RULE_STRING_in_ruleExpression1678); 
            	             
            	                newLeafNode(this_STRING_8, grammarAccess.getExpressionAccess().getSTRINGTerminalRuleCall_4_1_1()); 
            	                

            	            }
            	            break;

            	    }


            	    }
            	    break;

            	default :
            	    break loop16;
                }
            } while (true);


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleExpression"


    // $ANTLR start "entryRuleRightAttribute"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:845:1: entryRuleRightAttribute returns [EObject current=null] : iv_ruleRightAttribute= ruleRightAttribute EOF ;
    public final EObject entryRuleRightAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleRightAttribute = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:846:2: (iv_ruleRightAttribute= ruleRightAttribute EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:847:2: iv_ruleRightAttribute= ruleRightAttribute EOF
            {
             newCompositeNode(grammarAccess.getRightAttributeRule()); 
            pushFollow(FOLLOW_ruleRightAttribute_in_entryRuleRightAttribute1716);
            iv_ruleRightAttribute=ruleRightAttribute();

            state._fsp--;

             current =iv_ruleRightAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleRightAttribute1726); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleRightAttribute"


    // $ANTLR start "ruleRightAttribute"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:854:1: ruleRightAttribute returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) ) ;
    public final EObject ruleRightAttribute() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_attributeName_2_0=null;

         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:857:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:858:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:858:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:858:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:858:2: ( (otherlv_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:859:1: (otherlv_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:859:1: (otherlv_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:860:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getRightAttributeRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRightAttribute1771); 

            		newLeafNode(otherlv_0, grammarAccess.getRightAttributeAccess().getTargetTargetCrossReference_0_0()); 
            	

            }


            }

            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleRightAttribute1783); 

                	newLeafNode(otherlv_1, grammarAccess.getRightAttributeAccess().getFullStopKeyword_1());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:875:1: ( (lv_attributeName_2_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:876:1: (lv_attributeName_2_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:876:1: (lv_attributeName_2_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:877:3: lv_attributeName_2_0= RULE_ID
            {
            lv_attributeName_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleRightAttribute1800); 

            			newLeafNode(lv_attributeName_2_0, grammarAccess.getRightAttributeAccess().getAttributeNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getRightAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"attributeName",
                    		lv_attributeName_2_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleRightAttribute"


    // $ANTLR start "entryRuleLeftAttribute"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:901:1: entryRuleLeftAttribute returns [EObject current=null] : iv_ruleLeftAttribute= ruleLeftAttribute EOF ;
    public final EObject entryRuleLeftAttribute() throws RecognitionException {
        EObject current = null;

        EObject iv_ruleLeftAttribute = null;


        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:902:2: (iv_ruleLeftAttribute= ruleLeftAttribute EOF )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:903:2: iv_ruleLeftAttribute= ruleLeftAttribute EOF
            {
             newCompositeNode(grammarAccess.getLeftAttributeRule()); 
            pushFollow(FOLLOW_ruleLeftAttribute_in_entryRuleLeftAttribute1841);
            iv_ruleLeftAttribute=ruleLeftAttribute();

            state._fsp--;

             current =iv_ruleLeftAttribute; 
            match(input,EOF,FOLLOW_EOF_in_entryRuleLeftAttribute1851); 

            }

        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "entryRuleLeftAttribute"


    // $ANTLR start "ruleLeftAttribute"
    // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:910:1: ruleLeftAttribute returns [EObject current=null] : ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) ) ;
    public final EObject ruleLeftAttribute() throws RecognitionException {
        EObject current = null;

        Token otherlv_0=null;
        Token otherlv_1=null;
        Token lv_attributeName_2_0=null;

         enterRule(); 
            
        try {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:913:28: ( ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:914:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:914:1: ( ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:914:2: ( (otherlv_0= RULE_ID ) ) otherlv_1= '.' ( (lv_attributeName_2_0= RULE_ID ) )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:914:2: ( (otherlv_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:915:1: (otherlv_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:915:1: (otherlv_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:916:3: otherlv_0= RULE_ID
            {

            			if (current==null) {
            	            current = createModelElement(grammarAccess.getLeftAttributeRule());
            	        }
                    
            otherlv_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLeftAttribute1896); 

            		newLeafNode(otherlv_0, grammarAccess.getLeftAttributeAccess().getSourceSourceCrossReference_0_0()); 
            	

            }


            }

            otherlv_1=(Token)match(input,17,FOLLOW_17_in_ruleLeftAttribute1908); 

                	newLeafNode(otherlv_1, grammarAccess.getLeftAttributeAccess().getFullStopKeyword_1());
                
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:931:1: ( (lv_attributeName_2_0= RULE_ID ) )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:932:1: (lv_attributeName_2_0= RULE_ID )
            {
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:932:1: (lv_attributeName_2_0= RULE_ID )
            // ../org.dslintegration.MRules/src-gen/org/dslintegration/parser/antlr/internal/InternalMRules.g:933:3: lv_attributeName_2_0= RULE_ID
            {
            lv_attributeName_2_0=(Token)match(input,RULE_ID,FOLLOW_RULE_ID_in_ruleLeftAttribute1925); 

            			newLeafNode(lv_attributeName_2_0, grammarAccess.getLeftAttributeAccess().getAttributeNameIDTerminalRuleCall_2_0()); 
            		

            	        if (current==null) {
            	            current = createModelElement(grammarAccess.getLeftAttributeRule());
            	        }
                   		setWithLastConsumed(
                   			current, 
                   			"attributeName",
                    		lv_attributeName_2_0, 
                    		"ID");
            	    

            }


            }


            }


            }

             leaveRule(); 
        }
         
            catch (RecognitionException re) { 
                recover(input,re); 
                appendSkippedTokens();
            } 
        finally {
        }
        return current;
    }
    // $ANTLR end "ruleLeftAttribute"

    // Delegated rules


 

    public static final BitSet FOLLOW_ruleMergeRules_in_entryRuleMergeRules75 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleMergeRules85 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_11_in_ruleMergeRules122 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleMergeRules139 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleMergeRules156 = new BitSet(new long[]{0x0000000000002000L});
    public static final BitSet FOLLOW_13_in_ruleMergeRules168 = new BitSet(new long[]{0x0000000000000010L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleMergeRules185 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleMergeRules202 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_14_in_ruleMergeRules221 = new BitSet(new long[]{0x0000000000018000L});
    public static final BitSet FOLLOW_15_in_ruleMergeRules247 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_16_in_ruleMergeRules265 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleMergeRules278 = new BitSet(new long[]{0x0000000001004000L});
    public static final BitSet FOLLOW_ruleRule_in_ruleMergeRules301 = new BitSet(new long[]{0x0000000001004002L});
    public static final BitSet FOLLOW_ruleQName_in_entryRuleQName339 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleQName350 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQName390 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_17_in_ruleQName409 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleQName424 = new BitSet(new long[]{0x0000000000020002L});
    public static final BitSet FOLLOW_ruleSource_in_entryRuleSource473 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleSource483 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleSource526 = new BitSet(new long[]{0x0000000000180000L});
    public static final BitSet FOLLOW_19_in_ruleSource558 = new BitSet(new long[]{0x0000000000100000L});
    public static final BitSet FOLLOW_20_in_ruleSource584 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQName_in_ruleSource605 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleSource622 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleTarget_in_entryRuleTarget663 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleTarget673 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_18_in_ruleTarget716 = new BitSet(new long[]{0x0000000000280000L});
    public static final BitSet FOLLOW_19_in_ruleTarget748 = new BitSet(new long[]{0x0000000000200000L});
    public static final BitSet FOLLOW_21_in_ruleTarget774 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQName_in_ruleTarget795 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleTarget812 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleOutput_in_entryRuleOutput853 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleOutput863 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_22_in_ruleOutput906 = new BitSet(new long[]{0x0000000000800000L});
    public static final BitSet FOLLOW_23_in_ruleOutput932 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleQName_in_ruleOutput953 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleOutput970 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRule_in_entryRuleRule1011 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRule1021 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_24_in_ruleRule1058 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRule1075 = new BitSet(new long[]{0x0000000002000000L});
    public static final BitSet FOLLOW_25_in_ruleRule1092 = new BitSet(new long[]{0x00000000001C0000L});
    public static final BitSet FOLLOW_ruleSource_in_ruleRule1113 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRule1125 = new BitSet(new long[]{0x00000000002C0000L});
    public static final BitSet FOLLOW_ruleTarget_in_ruleRule1146 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRule1158 = new BitSet(new long[]{0x000000000CC00000L});
    public static final BitSet FOLLOW_ruleOutput_in_ruleRule1180 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRule1192 = new BitSet(new long[]{0x000000000C000000L});
    public static final BitSet FOLLOW_ruleRuleStatement_in_ruleRule1215 = new BitSet(new long[]{0x000000000C000000L});
    public static final BitSet FOLLOW_26_in_ruleRule1228 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleRuleStatement_in_entryRuleRuleStatement1264 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRuleStatement1274 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_27_in_ruleRuleStatement1311 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleStatement1328 = new BitSet(new long[]{0x0000000010000000L});
    public static final BitSet FOLLOW_28_in_ruleRuleStatement1345 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleExpression_in_ruleRuleStatement1366 = new BitSet(new long[]{0x0000000000801000L});
    public static final BitSet FOLLOW_23_in_ruleRuleStatement1379 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleStatement1399 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRuleStatement1411 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRuleStatement1428 = new BitSet(new long[]{0x0000000000001000L});
    public static final BitSet FOLLOW_12_in_ruleRuleStatement1447 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleExpression_in_entryRuleExpression1483 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleExpression1493 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLeftAttribute_in_ruleExpression1539 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_29_in_ruleExpression1552 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleLeftAttribute_in_ruleExpression1574 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleExpression1591 = new BitSet(new long[]{0x0000000060000000L});
    public static final BitSet FOLLOW_30_in_ruleExpression1605 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_ruleRightAttribute_in_ruleExpression1626 = new BitSet(new long[]{0x0000000020000002L});
    public static final BitSet FOLLOW_29_in_ruleExpression1639 = new BitSet(new long[]{0x0000000000000030L});
    public static final BitSet FOLLOW_ruleRightAttribute_in_ruleExpression1661 = new BitSet(new long[]{0x0000000020000002L});
    public static final BitSet FOLLOW_RULE_STRING_in_ruleExpression1678 = new BitSet(new long[]{0x0000000020000002L});
    public static final BitSet FOLLOW_ruleRightAttribute_in_entryRuleRightAttribute1716 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleRightAttribute1726 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRightAttribute1771 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleRightAttribute1783 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleRightAttribute1800 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_ruleLeftAttribute_in_entryRuleLeftAttribute1841 = new BitSet(new long[]{0x0000000000000000L});
    public static final BitSet FOLLOW_EOF_in_entryRuleLeftAttribute1851 = new BitSet(new long[]{0x0000000000000002L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLeftAttribute1896 = new BitSet(new long[]{0x0000000000020000L});
    public static final BitSet FOLLOW_17_in_ruleLeftAttribute1908 = new BitSet(new long[]{0x0000000000000020L});
    public static final BitSet FOLLOW_RULE_ID_in_ruleLeftAttribute1925 = new BitSet(new long[]{0x0000000000000002L});

}